// 1.字面量类型的基本上
const name: "why" = "why"; // const一个变量时，类型认为是该字面量
let age: 18 = 18; //如果不指定，类型会认为是number

type agePosible = 18 | 19 | 20;

// 2.将多个字面量类型联合起来 |
type Direction = "left" | "right" | "up" | "down";
const d1: Direction = "left";

// 栗子: 封装请求方法
type MethodType = "get" | "post";
function request(url: string, method: MethodType) {}

request("http://codercba.com/api/aaa", "post");

// TS细节
const info = {
  url: "xxxx",
  method: "post",
};
// 下面的做法是错误: info.method获取的是string类型
request(info.url, info.method);

// 解决方案一: info.method进行类型断言
// request(info.url, info.method as "post")

// 解决方案二: 直接让info对象类型是一个字面量类型
// const info2: { url: string, method: "post" } = {
//   url: "xxxx",
//   method: "post"
// }
const info2 = {
  url: "xxxx",
  method: "post",
} as const;
// xxx 本身就是一个string
request(info2.url, info2.method);

export {};
